Posts tagged with #Design Pattern

8 posts found

使用装饰器模式设计一个 Web 框架

在讲解了装饰器模式后,下面我们基于这个模式来设计一个简单的 Web 框架。框架基于 Exoress、加入了装饰器模式的设计。 > 之所以选择 Web 框架是因为问 AI 问题的时候它举了这个的例子,因此就试着写了一个简单的。 基于装饰器模式的核心思想是**使用装饰器将核心逻辑托管给元数据**,然后在最终的应用层中系统地处理这些元数据、从而实现 Web 逻辑。 下面是 Application...

TypeScript Mixin

在经典的面向对象编程中,我们经常使用继承的方法:创建一个通用的基类,然后扩展它以创建更特化的类。然而,这种模型有其局限性。如果我们想从两个或多个不相关的类中组合功能,该怎么办?TypeScript 和 JavaScript 一样,**只允许一个类扩展单个父类**。这就是“**组合优于继承**”原则发挥作用的地方。而 Mixin 即是实现这一目标的强大模式。...

TypeScript 装饰器

装饰器模式是一种结构型设计模式,它允许我们**在运行时动态地向一个对象添加新的行为和职责**,同时又不改变其结构。 这种模式的核心优势在于它遵循了“开闭原则”:对扩展开放,对修改关闭。我们可以在不修改现有代码的情况下,为其增添新功能。 在 TypeScript 和 JavaScript (ES2022+) 中,装饰器是这一设计模式的语法糖。它是一种特殊的函数,以 `@expression`...

JavaScript 面向对象编程

**面向对象编程 (Object-Oriented Programming, OOP)** 的核心目标是将复杂的问题分解为一个个独立的、可管理的单元(对象),从而提高代码的可重用性、可维护性和可扩展性。这种范式主要建立在四个核心原则之上: 1. **封装 (Encapsulation)** 2...

JavaScript 依赖注入

在开发中,一个类或模块通常需要依赖其他类或模块来完成工作。最直接的方式是在其内部直接创建依赖的实例。 ```javascript // 一个用于记录日志的服务 class Logger { log(message) { console. log(`[LOG]: ${message}`); } } // 用户服务,它需要使用 Logger class UserService {...

JavaScript 实现 Tic Tac Toe (2)

我们把 displayController 单独作为一个模块。这个模块完成了视图的工作、并提前做好一些绑定工作。 我们可以把一些固定的、不依赖特定情况的 DOM 操作先写好,这样就不需要在主文件 `script. js` 中写重复的代码了,主文件只需要负责把这些模块初始化、连接好即可。 我们把需要做绑定的组件传进来作为参数: ```javascript function...

JavaScript 实现 Tic Tac Toe (1)

> 第一部分主要讲解井字棋游戏初始化的一些东西,之后会讲一些技术性的东西。 下面我们通过实现一个简单的井字棋游戏来系统梳理一下前面的一些知识。 我们写一个最简单的 HTML 和 CSS: ```html <. doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport"...